Welcome to pandas!

8.8 concat表格纵向拼接(多表极简合并)

如果要执行多表格的纵向拼接,不但可以使用df.append()函数,还可以使用pd.concat()函数,该函数不但可以做纵向拼接,还可以做横向拼接,结构如下:

pd.concat(objs,axis=0,join=’outer’,ignore_index=False,keys=None,levels=None,names=None,Verify_integrity=False,copy=True)

objs :提供要拼接的多个Series或者多个DataFrame。存储在列表、元组、字典对象中;

axis :设置拼接方向,0为纵向拼接,1为横向拼接,默认为0

join :横向拼接时,以行索引为拼接依据,inner为内联接方式,outer为外联接方式,

ignore_index :是否重新编号

keys :添加索引标签名称

levels :用于构造分层索引的特定层级(唯一值)

names :分层索引标题


import pandas as pd

cg=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","采购部")

cw=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","财务部")

sc=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","生产部")

print (cg)

print (cw)

print (sc)

df=pd.concat(objs=[cg,cw,sc],

keys=[ "采购部","财务部","生产部" ],

names=[ "部门","序号" ]).reset_index(level=[ 0,1 ])

print (df)

返回:

姓名 工资
0 张三 111
1 李四 222
2 王麻子 333

姓名 工资
0 小韦 888
1 小李 777
2 小余 666

姓名 工资
0 小许 333
1 小郭 444
2 小张 555

部门 序号 姓名 工资
0 采购部 0 张三 111
1 采购部 1 李四 222
2 采购部 2 王麻子 333
3 财务部 0 小韦 888
4 财务部 1 小李 777
5 财务部 2 小余 666
6 生产部 0 小许 333
7 生产部 1 小郭 444
8 生产部 2 小张 555

可以合并objs和keys,结果是一样的。

import pandas as pd

cg=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","采购部")

cw=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","财务部")

sc=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","生产部")

print (cg)

print (cw)

print (sc)

df=pd.concat(objs={ "采购部" :cg, "财务部" :cw, "生产部" :sc},

names=[ "部门","序号" ]).reset_index(level=[ 0,1 ])

print (df)